package com.willie.utils.time;

import com.willie.utils.time.pattern.DatePatternEnum;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Objects;

/**
 * ----------------------------------------------
 * <p>类    名：</p>
 * <p>版    权：copyright© firegy.willie</p>
 * <p>作    者: liang</p>
 * <p>创建时间: 2018/6/2 15:53</p>
 * <p>描    述: 日期工具类 </p>
 * <p>修 改 人：</p>
 * <p>修改时间：</p>
 * -----------------------------------------------
 */
public abstract class DateUtil {
    private static int ONE_WEEK = 7;//一周数
    public static long ONE_SECORD = 1000;//一秒
    public static long ONE_MINUTE = ONE_SECORD * 60;//一分
    public static long ONE_HOURE = ONE_MINUTE * 60;//一小时
    public static long ONE_DAY = ONE_HOURE * 24;//一天
    private static SimpleDateFormat sdf;

    //TODO 非法日期模式校验

    /**
     * 返回指定日期字符串
     *
     * @param date    日期
     * @param pattern 日期模式
     * @return 指定日期字符串
     */
    public static String Date2String(Date date, DatePatternEnum pattern) {
        if (Objects.isNull(date)) {
            return null;
        }

        if (Objects.isNull(pattern)) {
            throw new IllegalArgumentException("非法日期模式");
        }
        sdf = new SimpleDateFormat(pattern.getPattern());
        return sdf.format(date);
    }

    /**
     * @param date
     * @param pattern
     * @return
     */
    public static Date String2Date(String date, DatePatternEnum pattern) {
        if (Objects.isNull(date) || date.isEmpty()) {
            return null;
        }

        if (Objects.isNull(pattern)) {
            throw new IllegalArgumentException("非法日期模式");
        }

        Date result = null;
        try {
            result = new Date();
            sdf = new SimpleDateFormat(pattern.getPattern());
            result = sdf.parse(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return result;
    }
}
